﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Comun;

namespace DalcProFacu
{
    public class Paciente
    {
        Conexion conn = null;

        public Paciente(Conexion con)
        {
            conn = con;
        }

        public int AltaPaciente(string idPac, string sApe, string sNombre, string sTipoDoc, string sNumDoc,
         string sFecNac, string sSexo, string sEstCivil, string sCelu,
         string sCalle, string sAltura, string sPiso, string sDpto, string sLocal,
         string sProv, string sTelef, string sTipCob, string sAsociado)
        {
            StringBuilder sSql = new StringBuilder();

            int fila;

            sSql.Append(" INSERT INTO SAHC_PACIENTE VALUES( ");
            sSql.Append(string.Format(" {0},'{1}','{2}','{3}','{4}','{5}','{6}','{7}' ", idPac, sNombre, sApe, sSexo, sTipoDoc, sNumDoc, sEstCivil, sFecNac));
            sSql.Append(string.Format(" , '{0}', '{1}' ", sTipoDoc, sAsociado));

            sSql.Append(string.Format(" , '{0}', '{1}' ", sCalle, sAltura));

            if (sPiso != "")
            {
                sSql.Append(string.Format(" ,'{0}' ", sPiso));
            }
            else
            {
                sSql.Append(string.Format(" ,'{0}' ", null));
            }

            if (sDpto != "")
            {
                sSql.Append(string.Format(" ,'{0}' ", sDpto));
            }
            else
            {
                sSql.Append(string.Format(" ,'{0}' ", null));
            }

            if (sTelef != "")
            {
                sSql.Append(string.Format(" ,'{0}' ", sTelef));
            }
            else
            {
                sSql.Append(string.Format(" ,'{0}' ", null));
            }

            if (sCelu != "")
            {
                sSql.Append(string.Format(" , '{0}' ", sCelu));
            }
            else
            {
                sSql.Append(string.Format(" , '{0}' ", null));
            }

            sSql.Append(string.Format(" , '{0}', '{1}')", sLocal, sProv));

            fila = conn.EjecutarQuery(sSql.ToString());

            //this.Errores = conn.Errores;
            return fila;
        }

        public int ModificacionPaciente(string idPac, string sApe, string sNombre, string sTipoDoc, string sNumDoc,
        string sFecNac, string sSexo, string sEstCivil, string sCelu,
        string sCalle, string sAltura, string sPiso, string sDpto, string sLocal,
        string sProv, string sTelef, string sTipCob, string sAsociado)
        {
            StringBuilder sSql = new StringBuilder();

            int fila;

            sSql.Append(" UPDATE SAHC_PACIENTE SET ");
            sSql.Append(string.Format(" NOMBRE = '{0}', APELLIDO = '{1}', SEXO = '{2}', TIPODOC = '{3}', NRODOC = '{4}', ESTADOCIVIL = '{5}', ", sNombre, sApe, sSexo, sTipoDoc, sNumDoc, sEstCivil));
            sSql.Append(string.Format(" FEC_NAC = '{0}', DIRECCION = '{1}', NUMERO = '{2}', LOCALIDAD = '{3}', PROVINCIA = '{4}' ", sFecNac, sCalle, sAltura,sLocal,sProv));
            sSql.Append(string.Format(" ,IDOBRASOCIAL = '{0}', NROOBRASOCIAL = '{1}' ", sTipoDoc, sAsociado));

            if (sPiso != "")
            {
                sSql.Append(string.Format(" ,PISO = '{0}' ", sPiso));
            }

            if (sDpto != "")
            {
                sSql.Append(string.Format(" ,DEPARTAMENTO = '{0}' ", sDpto));
            }

            if (sTelef != "")
            {
                sSql.Append(string.Format(" ,TELEFONO = '{0}' ", sTelef));
            }

            if (sCelu != "")
            {
                sSql.Append(string.Format(" ,CELULAR = '{0}' ", sCelu));
            }

            sSql.Append(string.Format(" WHERE IDPACIENTE = {0} ", idPac));

            fila = conn.EjecutarQuery(sSql.ToString());

            //this.Errores = conn.Errores;
            return fila;
        }

        public string GetIdPaciente(string sNroDoc)
        {
            StringBuilder sSql = new StringBuilder();

            DataSet Dt;

            sSql.Append(" SELECT IDPACIENTE FROM SAHC_PACIENTE ");
            sSql.Append(string.Format(" WHERE NRODOC = '{0}' ", sNroDoc));

            Dt = conn.EjecutarQuery(sSql.ToString(), "IDPAC");

            string id = Dt.Tables["IDPAC"].Rows[0]["IDPACIENTE"].ToString();

            //this.Errores = conn.Errores;
            return id;
        }

        public int AltaHistoriaClinica(string sHistorial, string sIdPac)
        {
            StringBuilder sSql = new StringBuilder();

            int fila;

            sSql.Append(" INSERT INTO SAHC_HISTORIACLINICA VALUES( ");
            sSql.Append(string.Format(" {0},{1},'{2}')", sHistorial, sIdPac, DateTime.Today.ToShortDateString()));

            fila = conn.EjecutarQuery(sSql.ToString());

            //this.Errores = conn.Errores;
            return fila;
        }

        public DataSet GetDatosPaciente(string sNumDoc)
        {
            StringBuilder sSql = new StringBuilder();

            DataSet Dt;

            sSql.Append(" SELECT PAC.*, HC.IDHISTORIACLINICA, OB.DESCRIPCION, TB.TBDESCR DESCTIPODOC, TB2.TBDESCR DESCSEXO, TB3.TBDESCR DESCESTCIVIL ");
            sSql.Append(" FROM SAHC_PACIENTE PAC ");
            sSql.Append(" INNER JOIN SAHC_HISTORIACLINICA HC ON HC.IDPACIENTE = PAC.IDPACIENTE ");
            sSql.Append(" INNER JOIN SAHC_OBRASOCIAL OB ON OB.IDOBRASOCIAL = PAC.IDOBRASOCIAL ");
            sSql.Append(" INNER JOIN SAHC_TABLAMADRE TB ON TB.TBCODE = PAC.SEXO ");
            sSql.Append(" INNER JOIN SAHC_TABLAMADRE TB2 ON TB2.TBCODE = PAC.TIPODOC ");
            sSql.Append(" INNER JOIN SAHC_TABLAMADRE TB3 ON TB3.TBCODE = PAC.ESTADOCIVIL ");
            sSql.Append(" WHERE TB.TBNUME = 1 AND TB2.TBNUME = 2 AND TB3.TBNUME = 3 ");
            sSql.Append(string.Format(" AND PAC.NRODOC = '{0}' ", sNumDoc));

            Dt = conn.EjecutarQuery(sSql.ToString(), "PACIENTE");

            //this.Errores = conn.Errores;
            return Dt;
        }

        public DataSet GetPacienteHC(string sHisto)
        {
            StringBuilder sSql = new StringBuilder();

            DataSet Dt;

            sSql.Append(" SELECT TOP 1  PAC.*, HC.IDHISTORIACLINICA, OB.DESCRIPCION, TB.TBDESCR DESCTIPODOC, TB2.TBDESCR DESCSEXO, TB3.TBDESCR DESCESTCIVIL ");
            sSql.Append(" FROM SAHC_PACIENTE PAC ");
            sSql.Append(" INNER JOIN SAHC_HISTORIACLINICA HC ON HC.IDPACIENTE = PAC.IDPACIENTE ");
            sSql.Append(" INNER JOIN SAHC_OBRASOCIAL OB ON OB.IDOBRASOCIAL = PAC.IDOBRASOCIAL ");
            sSql.Append(" INNER JOIN SAHC_TABLAMADRE TB ON TB.TBCODE = PAC.SEXO ");
            sSql.Append(" INNER JOIN SAHC_TABLAMADRE TB2 ON TB2.TBCODE = PAC.TIPODOC ");
            sSql.Append(" INNER JOIN SAHC_TABLAMADRE TB3 ON TB3.TBCODE = PAC.ESTADOCIVIL ");
            sSql.Append(" WHERE TB.TBNUME = '1' AND TB2.TBNUME = '2' AND TB3.TBNUME = '3' ");
            sSql.Append(string.Format(" AND HC.IDHISTORIACLINICA ='{0}' ", sHisto));

            Dt = conn.EjecutarQuery(sSql.ToString(), "PACIENTE");

            //this.Errores = conn.Errores;
            return Dt;
        }

        public DataSet GetPacientesDia(string Profesional, string Especialidad)
        {
            StringBuilder sSql = new StringBuilder();

            DataSet Dt;

            sSql.Append(" SELECT T.IDTURNO, T.FECHA, T.HORA, PC.APELLIDO + ' ' + PC.NOMBRE PACIENTE, ");
            sSql.Append("  PC.NRODOC, P.APELLIDO + ' ' + P.NOMBRE PROFESIONAL, T.IDPROFESIONAL, ");
            sSql.Append(" T.IDESPECIALIDAD, E.DESCRIPCION ESPECIALIDAD, HC.IDHISTORIACLINICA ");
            sSql.Append(" FROM SAHC_TURNO T ");
            sSql.Append(" INNER JOIN SAHC_PACIENTE PC ON PC.IDPACIENTE = T.IDPACIENTE ");
            sSql.Append(" INNER JOIN SAHC_PROFESIONAL PR ON PR.IDPROFESIONAL = T.IDPROFESIONAL ");
            sSql.Append(" INNER JOIN SAHC_PERSONAL P ON P.IDPERSONA = PR.IDPERSONAL ");
            sSql.Append(" INNER JOIN SAHC_ESPECIALIDAD E ON E.IDESPECIALIDAD = T.IDESPECIALIDAD ");
            sSql.Append(" INNER JOIN SAHC_HISTORIACLINICA HC ON HC.IDPACIENTE = T.IDPACIENTE ");
            sSql.Append(string.Format(" WHERE T.IDPROFESIONAL = '{0}' AND T.IDESPECIALIDAD = '{1}' ", Profesional,Especialidad));
            sSql.Append(string.Format(" AND FECHA = '{0}' ", DateTime.Today.ToShortDateString()));

            Dt = conn.EjecutarQuery(sSql.ToString(), "TURNOSDIA");

            //this.Errores = conn.Errores;
            return Dt;
        }


        public DataSet GetDatosPaciente()
        {
            StringBuilder sSql = new StringBuilder();

            DataSet Dt;

            sSql.Append(" SELECT DISTINCT p.idPaciente as CODIGO, p.apellido+', '+p.nombre as PACIENTE, ");
            sSql.Append(" p.nroDoc AS DOCUMENTO, o.descripcion AS COBERTURA, p.nroObraSocial AS AFILIADO");
            sSql.Append(" FROM SAHC_PACIENTE P INNER JOIN SAHC_OBRASOCIAL O ON p.idObraSocial = o.idObraSocial ");

            Dt = conn.EjecutarQuery(sSql.ToString(), "PACIENTE");

            //this.Errores = conn.Errores;
            return Dt;
        }
    }
}
